PrintStream and PrintWriter
Updated:
转:http://blog.csdn.net/zsw2zkl/article/details/7209734
PrintStream
PrintStream在OutputStream基础之上提供了增强的功能,即可以方便地输出各种类型的数据(而不仅限于byte型)的格式化表示形式。PrintStream的方法从不抛出IOEceptin
PrintWriter
PrintWriter提供了PrintStream的所有打 印方法,其方法也从不抛出IOException。
与PrintStream的区别:
作为处理流使用时,PrintStream只能封装OutputStream类型的字节流,而PrintWriter既可以封装OutputStream类型的字节流,还能够封装Writer类型的字符输出流并增强其功能。
实例:复制文件。
1  | import java.io.*;  | 
如果将上面的PrintWriter换成PrintStream会报错,因为PrintStream只能封装字节流,不能封装Writer类对象。
注:如果对输出流的格式有特殊要求,使用 PrintStream, PrintWriter显然会比较方便,详细可以产看Java API文档。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
构造方法摘要
PrintWriter(File file) 
          使用指定文件创建不具有自动行刷新的新 PrintWriter。	
PrintWriter(File file, String csn) 
          创建具有指定文件和字符集且不带自动刷行新的新 PrintWriter。	
PrintWriter(OutputStream out) 
          根据现有的 OutputStream 创建不带自动行刷新的新 PrintWriter。	
PrintWriter(OutputStream out, boolean autoFlush) 
          通过现有的 OutputStream 创建新的 PrintWriter。	
PrintWriter(String fileName) 
          创建具有指定文件名称且不带自动行刷新的新 PrintWriter。	
PrintWriter(String fileName, String csn) 
          创建具有指定文件名称和字符集且不带自动行刷新的新 PrintWriter。	
PrintWriter(Writer out) 
          创建不带自动行刷新的新 PrintWriter。	
PrintWriter(Writer out, boolean autoFlush) 
          创建新 PrintWriter。	
方法摘要
 PrintWriter
append(char c) 
          将指定字符添加到此 writer。
 PrintWriter
append(CharSequence csq) 
          将指定的字符序列添加到此 writer。
 PrintWriter
append(CharSequence csq, int start, int end) 
          将指定字符序列的子序列添加到此 writer。
 boolean	checkError() 
          如果流没有关闭,则刷新流且检查其错误状态。
protected  void	clearError() 
          清除此流的错误状态。
 void	close() 
          关闭该流并释放与之关联的所有系统资源。
 void	flush() 
          刷新该流的缓冲。
 PrintWriter
format(Locale l, String format, Object... args) 
          使用指定格式字符串和参数将一个格式化字符串写入此 writer 中。
 PrintWriter
format(String format, Object... args) 
          使用指定格式字符串和参数将一个格式化字符串写入此 writer 中。
 void	print(boolean b) 
          打印 boolean 值。
 void	print(char c) 
          打印字符。
 void	print(char[] s) 
          打印字符数组。
 void	print(double d) 
          打印 double 精度浮点数。
 void	print(float f) 
          打印一个浮点数。
 void	print(int i) 
          打印整数。
 void	print(long l) 
          打印 long 整数。
 void	print(Object obj) 
          打印对象。
 void	print(String s) 
          打印字符串。
 PrintWriter
printf(Locale l, String format, Object... args) 
          使用指定格式字符串和参数将格式化的字符串写入此 writer 的便捷方法。
 PrintWriter
printf(String format, Object... args) 
          使用指定格式字符串和参数将格式化的字符串写入此 writer 的便捷方法。
 void	println() 
          通过写入行分隔符字符串终止当前行。
 void	println(boolean x) 
          打印 boolean 值,然后终止该行。
 void	println(char x) 
          打印字符,然后终止该行。
 void	println(char[] x) 
          打印字符数组,然后终止该行。
 void	println(double x) 
          打印双精度浮点数,然后终止该行。
 void	println(float x) 
          打印浮点数,然后终止该行。
 void	println(int x) 
          打印整数,然后终止该行。
 void	println(long x) 
          打印 long 整数,然后终止该行。
 void	println(Object x) 
          打印 Object,然后终止该行。
 void	println(String x) 
          打印 String,然后终止该行。
protected  void	setError() 
          指示已发生错误。
 void	write(char[] buf) 
          写入字符数组。
 void	write(char[] buf, int off, int len) 
          写入字符数组的某一部分。
 void	write(int c) 
          写入单个字符。
 void	write(String s) 
          写入字符串。
 void	write(String s, int off, int len) 
          写入字符串的某一部分。